package com.ruoyi.util;

import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.Lists;
import com.google.common.collect.Multimap;
import com.ruoyi.common.constant.HfConstants;
import com.ruoyi.common.utils.LocationDTO;
import com.ruoyi.common.utils.LocationUtil;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.poi.util.LocaleUtil;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * TODO
 *
 * @author chenchuan2
 * @date 2023-03-16 13:49:18
 */
public class JCFBusUtil {

    private static final LocationDTO TTY = new LocationDTO(116.418282,40.060814,"天通苑");

    private static final LocationDTO WLKXC = new LocationDTO(116.476082,40.119942,"未来科学城");

    /**
     * 获取金辰府班车位置
     * 1、排除跟终点距离大于8Km的点
     * 2、从1中的数据聚合出一批点，两两之间的距离小于1km
     * 3、对聚合点的位置经纬度求平均值
     * 4、返回人数范围排名前2的位置聚合点
     * @param list
     * @return
     */
    public static List<LocationDTO> queryBus(List<LocationDTO> list){
        //过滤大于8Km的数据
        List<LocationDTO> collect = list.stream().filter(
                t -> LocationUtil.getDistance(t, TTY) < 8000
                || LocationUtil.getDistance(t, WLKXC) < 8000).collect(Collectors.toList());
        if(CollectionUtils.isEmpty(collect)){
            return Lists.newArrayList(HfConstants.JCF);
        }
        //从1中的数据聚合出一批点，两两之间的距离小于1km
        ListMultimap<String,LocationDTO> m = ArrayListMultimap.create();
        collect.forEach(t->{
            for (Map.Entry<String, LocationDTO> entry : m.entries()){
                LocationDTO value = entry.getValue();
                entry.getValue();
            }
        });
        return null;
    }
}
